//  引用  vue
import Vue from 'vue'
//  引用  vuex
import Vuex from 'vuex'

import { getItem, setItem } from '@/utils/storage'

Vue.use(Vuex)

// 定义 一个常量接收
const TOKEN_KEY = 'TOUTIAO_USER'

export default new Vuex.Store({

  state: {
    // 初始化  一个用于储存当前登录用户信息的对象   其中包含token等数据
    // 只有登录成功后 才会有数据        从本地存储中读出来的

    user: getItem(TOKEN_KEY)
    //  JSON.parse（）  把本地中 json 格式的字符串 重新转换为 对象
    // user: JSON.parse(window.localStorage.getItem(TOKEN_KEY))
  },

  // 永远通过 mutation 来修改state中的数据
  mutations: {
    // 传参  state 固定规则  data  接收参数
    setUser (state, data) {
      state.user = data

      // 为了防止刷新丢失，需要把数据备份到 本地存储

      setItem(TOKEN_KEY, state.user)
      // JSON.stringify()  把对象转换为 json 格式的字符串 放到本地存储
      // window.localStorage.setItem(TOKEN_KEY, JSON.stringify(state.user))
    }
  },
  actions: {
  },
  modules: {
  }
})
